/**
 * 页面加载器脚本
 * 负责加载公共资源和组件，确保页面一致性
 */

document.addEventListener('DOMContentLoaded', function() {
    // 检查当前页面是否是登录页面
    const isLoginPage = window.location.pathname.includes('login.html');
    
    // 检查当前页面是否是主控面板页面
    const isDashboardPage = window.location.pathname.includes('dashboard.html');
    
    // 如果是登录页面，不需要加载侧边栏和导航
    if (isLoginPage) return;
    
    // 加载必要的样式表
    loadStylesheets();
    
    // 加载必要的脚本
    loadScripts();
    
    // 如果不是主控面板页面，加载侧边栏
    if (!isDashboardPage) {
        loadSidebar();
    }
});

/**
 * 检查资源是否已加载
 * @param {string} type - 资源类型 ('stylesheet' 或 'script')
 * @param {string} url - 资源URL
 * @returns {boolean} - 是否已加载
 */
function isResourceLoaded(type, url) {
    if (type === 'stylesheet') {
        const links = document.getElementsByTagName('link');
        for (let i = 0; i < links.length; i++) {
            if (links[i].href.includes(url)) {
                return true;
            }
        }
    } else if (type === 'script') {
        const scripts = document.getElementsByTagName('script');
        for (let i = 0; i < scripts.length; i++) {
            if (scripts[i].src.includes(url)) {
                return true;
            }
        }
    }
    return false;
}

/**
 * 加载样式表
 */
function loadStylesheets() {
    // Font Awesome (如果尚未加载)
    if (!isResourceLoaded('stylesheet', 'font-awesome')) {
        const fontAwesome = document.createElement('link');
        fontAwesome.rel = 'stylesheet';
        fontAwesome.href = 'https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css';
        document.head.appendChild(fontAwesome);
    }
    
    // 通用样式
    if (!isResourceLoaded('stylesheet', 'common.css')) {
        const commonCss = document.createElement('link');
        commonCss.rel = 'stylesheet';
        commonCss.href = 'styles/common.css';
        document.head.appendChild(commonCss);
    }
    
    // 组件样式
    if (!isResourceLoaded('stylesheet', 'components.css')) {
        const componentsCss = document.createElement('link');
        componentsCss.rel = 'stylesheet';
        componentsCss.href = 'styles/components.css';
        document.head.appendChild(componentsCss);
    }
    
    // 导航样式
    if (!isResourceLoaded('stylesheet', 'main-nav.css')) {
        const navCss = document.createElement('link');
        navCss.rel = 'stylesheet';
        navCss.href = 'styles/main-nav.css';
        document.head.appendChild(navCss);
    }
    
    // 侧边栏样式
    if (!isResourceLoaded('stylesheet', 'sidebar.css')) {
        const sidebarCss = document.createElement('link');
        sidebarCss.rel = 'stylesheet';
        sidebarCss.href = 'styles/sidebar.css';
        document.head.appendChild(sidebarCss);
    }
}

/**
 * 加载脚本
 */
function loadScripts() {
    // 侧边栏脚本
    if (!isResourceLoaded('script', 'sidebar.js')) {
        const sidebarJs = document.createElement('script');
        sidebarJs.src = 'js/sidebar.js';
        document.body.appendChild(sidebarJs);
    }
    
    // 移动菜单脚本 (延迟加载，确保DOM已完全加载)
    setTimeout(() => {
        if (!isResourceLoaded('script', 'mobile-menu.js')) {
            const mobileMenuJs = document.createElement('script');
            mobileMenuJs.src = 'js/mobile-menu.js';
            document.body.appendChild(mobileMenuJs);
        }
    }, 100);
}

/**
 * 加载侧边栏
 */
function loadSidebar() {
    // 检查是否已存在侧边栏
    if (document.querySelector('.sidebar')) return;
    
    // 检查是否存在应用容器
    let appContainer = document.querySelector('.app-container');
    
    // 如果不存在应用容器，创建一个
    if (!appContainer) {
        appContainer = document.createElement('div');
        appContainer.className = 'app-container';
        
        // 将body的直接子元素移动到应用容器中
        const mainContent = document.createElement('div');
        mainContent.className = 'main-content';
        
        while (document.body.firstChild) {
            mainContent.appendChild(document.body.firstChild);
        }
        
        appContainer.appendChild(mainContent);
        document.body.appendChild(appContainer);
    }
    
    // 创建侧边栏容器
    const sidebarContainer = document.createElement('div');
    sidebarContainer.id = 'sidebar-container';
    
    // 将侧边栏容器作为应用容器的第一个子元素
    if (appContainer.firstChild) {
        appContainer.insertBefore(sidebarContainer, appContainer.firstChild);
    } else {
        appContainer.appendChild(sidebarContainer);
    }
    
    // 加载侧边栏模板
    fetch('templates/sidebar-template.html')
        .then(response => response.text())
        .then(html => {
            sidebarContainer.innerHTML = html;
            
            // 确保主内容区与侧边栏正确连接
            const sidebar = sidebarContainer.querySelector('.sidebar');
            const mainContent = document.querySelector('.main-content');
            
            if (sidebar && mainContent) {
                // 确保主内容区紧跟在侧边栏后面
                if (sidebar.nextElementSibling !== mainContent) {
                    appContainer.insertBefore(mainContent, sidebar.nextElementSibling);
                }
            }
            
            // 侧边栏加载完成后，执行侧边栏脚本
            const sidebarScript = document.createElement('script');
            sidebarScript.src = 'js/sidebar.js';
            document.body.appendChild(sidebarScript);
        })
        .catch(error => {
            console.error('加载侧边栏失败:', error);
        });
} 